#include<iostream>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>

#define MAX_SIZE 4048
#define PROJ_ID 0x664
#define PATHNAME "."
//系统分配共享内存是以4kb为单位的！

int main()
{
    //参数1：共享内存的文件名   参数2：文件的权限
    //成功返回key，失败返回-1
    key_t key = ftok(PATHNAME,PROJ_ID);
    //std::cout<<key<<std::endl;

    //参数1：key值   参数2：共享内存的最大空间   参数3：IPC_CREAT/IPC_EXCL
    //成功返回shm的id,失败返回-1，错误码被设置
    int id = shmget(key,MAX_SIZE,IPC_CREAT);

    //参数1：shm的id    参数2：const void* shmaddr    参数3：int shmflg 
    //成功返回shm的address  失败返回(void*)-1  错误码被设置以标识错误
    //参数为NULL，核心自动选择一个地址 
    char* addr = (char*)shmat(id,NULL,0);

    //参数：由shmat返回的指针
    //成功返回0，失败返回-1，错误码被设置
    int ret = shmdt(addr);


    //用于控制共享内存
    //参数2：将要采取的动作 IPC_STAT/IPC_SET/IPC_RMID(删除共享内存段)
    //int shmctl(int shmid,int cmd,struct shmid_ds *buf);


    return 0;
}